A file system is typically used by an operating system or program applications to locate, name, organize and store files. “Files” are named collections of information in many data formats, such as a program, data used by a program application, user-created documents, etc. The file system, itself, consists of files, directories, and information needed to locate and access files. Most file systems include functionality needed to translate requests for files (such as reading and writing data) from application programs into low-level, sector oriented tasks that are understood by a driver and used for communicating with an underlying storage media, such as a hard disk, floppy diskette, Zip drive, flash drive, and so forth.
Most current file systems tend to use rigid architectures that behave the same regardless of the underlying storage medium. Accordingly, to facilitate communication between most file systems and different types of storage media, it is usually necessary to create specific drivers adapted to the particular type or brand of underlying media. Typically, the drivers enable a file system to interface with a particular medium by providing a device-specific control program to communicate with the medium in response to commands received from the file system.
A drawback of current file system architectures is that they tend to incorporate methodologies that were developed decades ago. The file systems were originally intended for use with storage mediums that operate in a stable operating environment, such as mainframe computers and stationary personal computers. However, when used in conjunction with less traditional computer devices, such as thin clients (e.g., personal digital assistants (PDAs), tablet PCs, etc.), wireless handsets, set-top boxes and other non-traditional computer devices, current file systems tend to operate inefficiently. For example, many of the latest computer gadgets tend to be battery-operated and frequently experience catastrophic system failures such as a power-failure event. Unfortunately, current file systems tend to use boot sequencing techniques that were originally intended for use with media found in more traditional computing environments, such as a workstation or personal computer communicating with a hard disk. These boot sequencing techniques tend to be very slow and require an inordinate amount of time to recover from a catastrophic event. With emerging computer devices, where power failures and network disconnections are common, such boot sequencing techniques take too much time and, are therefore, undesirable.
Another disadvantage of current file systems is that they tend to be media specific. That is, to adapt a file system to function with a particular brand or type of media is often necessary to design (or redesign) one or more drivers to enable the file system to interface with the storage medium. As a result, some original equipment manufacturers (OEMs) of computer devices deploy vender supplied drivers associated with the vendor supplied storage medium. This results in having to develop intermediary drivers that are type specific to interface between the file system and the vendor supplied driver(s). If an OEM desires to change from one vendor's supplied storage media to a different vendor's supplied storage media, then the OEM typically has to develop new intermediary type specific drivers to interface with the new vendor supplied driver(s). This process is labor intensive, subject to errors and delays, and is expensive. As a result, many OEMs avoid having to change the particular brand or type of storage medium and become tied-in to a particular type/brand of storage medium.
Another drawback associated with current file systems is that they often use storage techniques inherently detrimental to operating characteristics of the storage medium. For example, repetitively storing to a specific area of the medium may damage and prematurely destroy the longevity of certain media. Many traditional file systems tend to use tables and other techniques that are located in fixed locations of the storage medium, which can be extremely harmful to certain types of data sources such as flash memory.
The aforementioned examples are only a few of the many limitations associated with current file systems. Accordingly, current file system techniques are unable to address an ever increasing demand for more robust and adaptable file systems.